package com.xiuxia.bopicturebackend.api.imagesearch.sub;

import com.xiuxia.bopicturebackend.api.imagesearch.model.ImageSearchResult;
import lombok.extern.slf4j.Slf4j;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 * 通过搜狗识图API获取图片搜索结果页面地址
 */
@Slf4j
public class GetSougouImagePageUrlApi {

    /**
     * 获取搜狗识图的结果页面地址（经过两次编码，与目标URL完全一致）
     *
     * @param imageUrl 原始图片地址（必须可公网访问）
     * @return 搜狗识图结果页面地址
     */
    public static String getImagePageUrl(String imageUrl) {
        try {
            // 1. 第一次编码：对原始图片URL进行编码
            String encodedImageUrl = URLEncoder.encode(imageUrl, StandardCharsets.UTF_8.name());

            // 2. 构造query参数的基础值（包含appid和编码后的图片URL）
            String baseQueryValue = "https://img01.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto?appid=122&url=" + encodedImageUrl;

            // 3. 第二次编码：对baseQueryValue进行编码（关键步骤，确保与目标URL一致）
            String encodedQueryValue = URLEncoder.encode(baseQueryValue, StandardCharsets.UTF_8.name());

            // 4. 拼接完整的搜狗识图URL
            String sogouSearchUrl = "https://ris.sogou.com/ris?query=" + encodedQueryValue + "&flag=1&drag=1";

            return sogouSearchUrl;
        } catch (UnsupportedEncodingException e) {
            // 理论上UTF-8编码不会抛出此异常，此处仅做防御性处理
            log.error("URL编码失败", e);
            throw new RuntimeException("生成图片搜索地址失败", e);
        }
    }

    public static void main(String[] args) {
        // 测试以图搜图功能
        String imageUrl = "https://xiuxia-picture-1329022672.cos.ap-shanghai.myqcloud.com//space/1939518916548198402/2025-07-01_t1gkeg0nulq5jkf3.jpg";
        String result = getImagePageUrl(imageUrl);
        ParseSouGouImageSearchResults parseSouGouImageSearchResults = new ParseSouGouImageSearchResults();
        List<ImageSearchResult> imageList = parseSouGouImageSearchResults.parse(result);
        System.out.println("搜狗识图结果页面地址：" + result);
    }
}
